<?php
	include_once 'Usuario.php';
	include_once 'Paper.php';
	
	class Autor extends Usuario
	{
		public $autor_id;
		public $autor;		
		public $pais;
		public $email1;
		public $email2;
		public $institucion;
		public $telefono;
		public $archivo_cv;
		public $archivo_referencia;
		public $usuario_id;
				
		public $Papers;
		
		public function __construct($autor_id = 0){
			$this->autor_id = $autor_id;
		}
		
		public function MoverPosicion($idpaper, $idautor, $mov){
			
			global $dbh;
			
				if($mov == 1){
					//Bajar					
					$reg = "+1";
					$signo = " >= ";
				}else{
					//Subir
					$reg = "-1";				
					$signo = " <= ";
				}
			
				//Capturand el orden del registro actual
				$sql = "select orden from autor_paper where idpaper = $idpaper and idautor = $idautor";
				$orden = 0;
				foreach($dbh->query($sql) as $row){
					if($row["orden"])
						$orden = $row["orden"];
				}

				//Capturando el orden del registro siguiente sea de arriba o abajo
				$ordenSiguiente = 0;
				$sql = "select orden from autor_paper where idpaper = $idpaper and (orden $signo $orden or orden is NULL) and idautor <> $idautor";
				foreach($dbh->query($sql) as $row){
					if($row["orden"])
						$ordenSiguiente = $row["orden"];
				}
				
				//actualizando 
				if($mov == 1){
					$ordenSiguiente = $ordenSiguiente - 1;
				}else{
					$ordenSiguiente = $ordenSiguiente  +1;
				}
				if($ordenSiguiente < 0){
					$ordenSiguiente = 1;
				}
				
				$sql = "update autor_paper set orden = $ordenSiguiente
					where idpaper = $idpaper and (orden $signo $orden or orden is NULL) and idautor <> $idautor
					limit 1
					";
					
					echo $sql;
				$temp_q_id = $dbh->prepare($sql);
				$temp_q_id->execute();
												
				$sql = "update autor_paper set order = orden $reg where idpaper = $idpaper and idautor = $idautor limit 1";
				
				$temp_q_id = $dbh->prepare($sql);
				$temp_q_id->execute();
			
		}
		
		static function Listar($anio = "2011"){
			global $dbh;
			$lista = array();

			$condicion = '';
			if($anio!= ''){
				$condicion .= ' and fecha >= "'.$anio.'-1-1'.'" and fecha <= "'.$anio.'-12-31"';
			}
					
			$sql = 'SELECT `autor_id`,`autor`,`pais`,`email1`,`email2`,`institucion`,`telefono`,`archivo_cv`,`archivo_referencia`,`usuario_id` 
					FROM autores
					where 1 = 1 '.$condicion.'
					';
			
			foreach($dbh->query($sql) as $row){
				
				$autor = new Autor($row['autor_id']);
				$autor->autor 				= $row['autor'];
				$autor->pais  				= $row['pais'];
				$autor->email1 				= $row['email1'];
				$autor->email2				= $row['email2'];
				$autor->institucion 		= $row['institucion'];
				$autor->telefono			= $row['telefono'];
				$autor->archivo_cv			= $row['archivo_cv'];
				$autor->archivo_referencia 	= $row['archivo_referencia'];
				$autor->usuario_id			= $row['usuario_id'];
				$lista[] = $autor;					
			}			
			return	$lista;
		}
					
		static public function ListarPapers($idAutor){
			global $dbh;
			
			$sql = 'SELECT
					pp.idpaper,
					titulo,
					fechasubida,
					idtrack,
					ididioma,
					paper_file,
					paper_abstract,
					EsAceptado,
					paper_final,
					resultado_final
					FROM  `paper` pp
					inner join `autor_paper` ap	
					on ap.idpaper = pp.idpaper
					where idautor = '.$idAutor;
									
			$obj = null;
			
			$lista = array();
			foreach($dbh->query($sql) as $row){
				$obj = new Paper();
				$obj->IdPaper = $row['idpaper'];
				$obj->Titulo = $row['titulo'];
				$obj->FechaSubida = $row['fechasubida'];
				$obj->ResultadoFinal = $row['resultado_final'];
				$obj->PaperFile = $row['paper_file'];
				$obj->PaperAbstract = $row['paper_abstract'];
				$obj->PaperFinal = $row['paper_final'];
				$obj->EsAceptado = $row['EsAceptado'];
				$obj->Idioma = Idioma::Obtener($row['ididioma']);
				$obj->Track = Track::Obtener($row['idtrack']);
				$obj->ObtenerAutores();
				$obj->ObtenerRevisores();
				$lista[] = $obj;
			}
							
					
				
			return $lista;			
		}		
		
		public function CargarPapers(){
			global $dbh;
			
			$sql = "SELECT 	paper_id  from 
					`papers` where autor_id = ".$this->autor_id;
			$lista = array();
			 
			foreach($dbh->query($sql) as $row) {
				$temp = Paper::Obtener($row['paper_id']);
				$temp->ObtenerRevisores();
				$lista[] = $temp;
			}
			$this->Papers = $lista;		
		}
		
		static function BuscarCorreo($email){
			global $dbh;
			
			if($email != ""){
				$sql = "SELECT count(*) FROM `autores` where email1 = '".$email."' or email2 = '".$email."' ";
				//echo $sql;
				if ($res = $dbh->query($sql)) {				
					return $res->fetchColumn();
				}
			}
			return 0;
		}
		
		public function Eliminar(){
			global $dbh;
			parent::Eliminar();
			
			$sql = 'DELETE FROM `autores` WHERE `usuario_id` =  "'.$this->usuario_id.'"';
			$temp_q_id = $dbh->prepare($sql);
			if (!$temp_q_id) {
				echo "\nPDO::errorInfo():\n";				
			}
			$temp_q_id->execute();	
		}
		
	}
?>